package redlib.backend.service;

import redlib.backend.dto.ArticleDTO;
import redlib.backend.dto.query.ArticleQueryDTO;
import redlib.backend.dto.query.SearchArticleQueryDTO;
import redlib.backend.model.Page;
import redlib.backend.vo.ArticleVO;
import redlib.backend.vo.LuceneResultBookVO;

import java.util.List;

public interface ArticleService {
    Page<ArticleVO> listByPage(ArticleQueryDTO queryDTO);

    /**
     * 新建文章
     *
     * @param articleDTO 文章输入对象
     * @return 文章编码
     */
    Integer addArticle(ArticleDTO articleDTO);

    /**
     * 更新文章数据
     *
     * @param articleDTO 文章输入对象
     * @return 文章编码
     */
    Integer updateArticle(ArticleDTO articleDTO);

    /**
     * 根据编码列表，批量删除文章
     *
     * @param ids 编码列表
     */
    void deleteByCodes(List<Integer> ids);

    /**
     * 根据检索关键字，返回针对所有文章的内容检索
     *
     * @param queryDTO 检索数据
     */
    Page<LuceneResultBookVO> search(SearchArticleQueryDTO queryDTO);
}
